package cn.zyl.demo.common.enums;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * FontRangeEnum 枚举说明: 字符Unicode的范围(16进制)枚举
 * <p>内容提取自网址:<a href="https://unicode-table.com/cn/">Unicode 字符百科</a>,js脚本如下</p>
 * <pre>
 * var as = $('#js-scrollable a'),res = '';
 * as.each(function(i,item){
 *   var m = $(item),
 *       t=m.find('.block-sidebar__item-title'),
 *       r=m.find('.block-sidebar__item-range'),
 * 	  tt = t.text(),
 * 	  mt = m.attr('href').replace('/cn/blocks/','').replace('/','').replaceAll('-','_').toLocaleUpperCase(),
 * 	  rt = r.text().split('—')
 * 	  ;
 *   // m . attr('href') = /cn/blocks/basic-latin/
 *   // t . text() = 基本拉丁字母
 *   // r . text() = 0000—007F
 *   res += ('/' + '** ' + tt + ' *' + '/\n' + mt + '(' + i + ',0x' + rt[0] + ',0x' + rt[1] + '),\n');
 * })
 * console.log(res)
 * </pre>
 *
 * @author wsz
 * @version v1.0
 * @date 2020-08-18
 */
public enum FontRangeEnum {
    /** 基本拉丁字母,128,控制字符：U+0000 - U+001F、U+007F */
    BASIC_LATIN(0,0x0000,0x007F),
    /** 拉丁文补充1 */
    LATIN_1_SUPPLEMENT(1,0x0080,0x00FF),
    /** 拉丁文扩展A */
    LATIN_EXTENDED_A(2,0x0100,0x017F),
    /** 国际音标扩展 */
    IPA_EXTENSIONS(3,0x0250,0x02AF),
    /** 占位修饰符号 */
    SPACING_MODIFIER_LETTERS(4,0x02B0,0x02FF),
    /** 结合附加符号 */
    COMBINING_DIACRITICAL_MARKS(5,0x0300,0x036F),
    /** 希腊字母及科普特字母 */
    GREEK_COPTIC(6,0x0370,0x03FF),
    /** 西里尔字母 */
    CYRILLIC(7,0x0400,0x04FF),
    /** 西里尔字母补充 */
    CYRILLIC_SUPPLEMENT(8,0x0500,0x052F),
    /** 亚美尼亚字母 */
    ARMENIAN(9,0x0530,0x058F),
    /** 希伯来文 */
    HEBREW(10,0x0590,0x05FF),
    /** 阿拉伯文 */
    ARABIC(11,0x0600,0x06FF),
    /** 叙利亚文 */
    SYRIAN(12,0x0700,0x074F),
    /** 阿拉伯文补充 */
    ARABIC_SUPPLEMENT(13,0x0750,0x077F),
    /** 它拿字母 */
    THAANA(14,0x0780,0x07BF),
    /** 西非书面语言 */
    NKO(15,0x07C0,0x07FF),
    /** 撒玛利亚字母 */
    SAMARITAN(16,0x0800,0x083F),
    /** Mandaic */
    MANDAIC(17,0x0840,0x085F),
    /** Syriac Supplement */
    SYRIAC_SUPPLEMENT(18,0x0860,0x086F),
    /** 阿拉伯语扩展 */
    ARABIC_EXTENDED_A(19,0x08A0,0x08FF),
    /** 天城文 */
    DEVANAGARI(20,0x0900,0x097F),
    /** 孟加拉文 */
    BENGALI(21,0x0980,0x09FF),
    /** 果鲁穆奇字母 */
    GURMUKHI(22,0x0A00,0x0A7F),
    /** 古吉拉特文 */
    GUJARATI(23,0x0A80,0x0AFF),
    /** 奥里亚文 */
    ORIYA(24,0x0B00,0x0B7F),
    /** 泰米尔文 */
    TAMIL(25,0x0B80,0x0BFF),
    /** 泰卢固文 */
    TELUGU(26,0x0C00,0x0C7F),
    /** 卡纳达文 */
    KANNADA(27,0x0C80,0x0CFF),
    /** 马拉雅拉姆文 */
    MALAYALAM(28,0x0D00,0x0D7F),
    /** 僧伽罗文 */
    SINHALA(29,0x0D80,0x0DFF),
    /** 泰文 */
    THAI(30,0x0E00,0x0E7F),
    /** 老挝文 */
    LAO(31,0x0E80,0x0EFF),
    /** 藏文 */
    TIBETAN(32,0x0F00,0x0FFF),
    /** 缅甸文 */
    MYANMAR(33,0x1000,0x109F),
    /** 格鲁吉亚字母 */
    GEORGIAN(34,0x10A0,0x10FF),
    /** 谚文字母 */
    HANGUL_JAMO(35,0x1100,0x11FF),
    /** 埃塞俄比亚语 */
    ETHIOPIC(36,0x1200,0x137F),
    /** 埃塞俄比亚语补充 */
    ETHIOPIC_SUPPLEMENT(37,0x1380,0x139F),
    /** 切罗基字母 */
    CHEROKEE(38,0x13A0,0x13FF),
    /** 统一加拿大原住民音节文字 */
    UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS(39,0x1400,0x167F),
    /** 欧甘字母 */
    OGHAM(40,0x1680,0x169F),
    /** 卢恩字母 */
    RUNIC(41,0x16A0,0x16FF),
    /** 他加禄字母 */
    TAGALOG(42,0x1700,0x171F),
    /** 哈努诺文 */
    HANUNOO(43,0x1720,0x173F),
    /** 布迪文 */
    BUHID(44,0x1740,0x175F),
    /** 塔格巴努亚文 */
    TAGBANWA(45,0x1760,0x177F),
    /** 高棉文 */
    KHMER(46,0x1780,0x17FF),
    /** 蒙古文 */
    MONGOLIAN(47,0x1800,0x18AF),
    /** 统一加拿大原住民音节文字扩展 */
    UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED(48,0x18B0,0x18FF),
    /** 林布文 */
    LIMBU(49,0x1900,0x194F),
    /** 德宏傣文 */
    TAI_LE(50,0x1950,0x197F),
    /** 新傣仂文 */
    NEW_TAI_LUE(51,0x1980,0x19DF),
    /** 高棉文符号 */
    KHMER_SYMBOLS(52,0x19E0,0x19FF),
    /** 布吉文 */
    BUGINESE(53,0x1A00,0x1A1F),
    /** 老傣文 */
    TAI_THAM(54,0x1A20,0x1AAF),
    /** Combining Diacritical Marks Extended */
    COMBINING_DIACRITICAL_MARKS_EXTENDED(55,0x1AB0,0x1AFF),
    /** 巴厘字母 */
    BALINESE(56,0x1B00,0x1B7F),
    /** 巽他字母 */
    SUNDANESE(57,0x1B80,0x1BBF),
    /** 巴塔克文 */
    BATAK(58,0x1BC0,0x1BFF),
    /** 雷布查字母 */
    LEPCHA(59,0x1C00,0x1C4F),
    /** Ol-Chiki */
    OL_CHIKI(60,0x1C50,0x1C7F),
    /** Cyrillic Extended C */
    CYRILLIC_EXTENDED_C(61,0x1C80,0x1C8F),
    /** Georgian Extended */
    GEORGIAN_EXTENDED(62,0x1C90,0x1CBF),
    /** 巽他字母补充 */
    SUNDANESE_SUPPLEMENT(63,0x1CC0,0x1CCF),
    /** 吠陀梵文 */
    VEDIC_EXTENSIONS(64,0x1CD0,0x1CFF),
    /** 语音学扩展 */
    PHONETIC_EXTENSIONS(65,0x1D00,0x1D7F),
    /** 语音学扩展补充 */
    PHONETIC_EXTENSIONS_SUPPLEMENT(66,0x1D80,0x1DBF),
    /** 结合附加符号补充 */
    COMBINING_DIACRITICAL_MARKS_SUPPLEMENT(67,0x1DC0,0x1DFF),
    /** 拉丁文扩展附加 */
    LATIN_EXTENDED_ADDITIONAL(68,0x1E00,0x1EFF),
    /** 希腊语扩展 */
    GREEK_EXTENDED(69,0x1F00,0x1FFF),
    /** 常用标点 */
    GENERAL_PUNCTUATION(70,0x2000,0x206F),
    /** 上标及下标 */
    SUPERSCRIPTS_AND_SUBSCRIPTS(71,0x2070,0x209F),
    /** 货币符号 */
    CURRENCY_SYMBOLS(72,0x20A0,0x20CF),
    /** 组合用记号 */
    COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS(73,0x20D0,0x20FF),
    /** 字母式符号 */
    LETTERLIKE_SYMBOLS(74,0x2100,0x214F),
    /** 数字形式 */
    NUMBER_FORMS(75,0x2150,0x218F),
    /** 箭头 */
    ARROWS(76,0x2190,0x21FF),
    /** 数学运算符 */
    MATHEMATICAL_OPERATORS(77,0x2200,0x22FF),
    /** 杂项工业符号 */
    MISCELLANEOUS_TECHNICAL(78,0x2300,0x23FF),
    /** 控制图片 */
    CONTROL_PICTURES(79,0x2400,0x243F),
    /** 光学识别符 */
    OPTICAL_CHARACTER_RECOGNITION(80,0x2440,0x245F),
    /** 带圈或括号的字母数字 */
    ENCLOSED_ALPHANUMERICS(81,0x2460,0x24FF),
    /** 制表符 */
    BOX_DRAWING(82,0x2500,0x257F),
    /** 方块元素 */
    BLOCK_ELEMENTS(83,0x2580,0x259F),
    /** 几何图形 */
    GEOMETRIC_SHAPES(84,0x25A0,0x25FF),
    /** 杂项符号 */
    MISCELLANEOUS_SYMBOLS(85,0x2600,0x26FF),
    /** 印刷符号 */
    DINGBATS(86,0x2700,0x27BF),
    /** 杂项数学符号A */
    MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A(87,0x27C0,0x27EF),
    /** 追加箭头A */
    SUPPLEMENTAL_ARROWS_A(88,0x27F0,0x27FF),
    /** 盲文点字模型 */
    BRAILLE_PATTERNS(89,0x2800,0x28FF),
    /** 追加箭头B */
    SUPPLEMENTAL_ARROWS_B(90,0x2900,0x297F),
    /** 杂项数学符号B */
    MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B(91,0x2980,0x29FF),
    /** 追加数学运算符 */
    SUPPLEMENTAL_MATHEMATICAL_OPERATORS(92,0x2A00,0x2AFF),
    /** 杂项符号和箭头 */
    MISCELLANEOUS_SYMBOLS_AND_ARROWS(93,0x2B00,0x2BFF),
    /** 格拉哥里字母 */
    GLAGOLITIC(94,0x2C00,0x2C5F),
    /** 拉丁文扩展C */
    LATIN_EXTENDED_C(95,0x2C60,0x2C7F),
    /** 科普特字母 */
    COPTIC(96,0x2C80,0x2CFF),
    /** 格鲁吉亚字母补充 */
    GEORGIAN_SUPPLEMENT(97,0x2D00,0x2D2F),
    /** 提非纳文 */
    TIFINAGH(98,0x2D30,0x2D7F),
    /** 埃塞俄比亚语扩展 */
    ETHIOPIC_EXTENDED(99,0x2D80,0x2DDF),
    /** 西里尔字母扩展 */
    CYRILLIC_EXTENDED(100,0x2DE0,0x2DFF),
    /** 追加标点 */
    SUPPLEMENTAL_PUNCTUATION(101,0x2E00,0x2E7F),
    /** 中日韩部首补充 */
    CJK_RADICALS_SUPPLEMENT(102,0x2E80,0x2EFF),
    /** 康熙部首 */
    KANGXI_RADICALS(103,0x2F00,0x2FDF),
    /** 表意文字描述符 */
    IDEOGRAPHIC_DESCRIPTION_CHARACTERS(104,0x2FF0,0x2FFF),
    /** 中日韩符号和标点 */
    CJK_SYMBOLS_AND_PUNCTUATION(105,0x3000,0x303F),
    /** 日文平假名 */
    HIRAGANA(106,0x3040,0x309F),
    /** 日文片假名 */
    KATAKANA(107,0x30A0,0x30FF),
    /** 注音字母 */
    BOPOMOFO(108,0x3100,0x312F),
    /** 谚文兼容字母 */
    HANGUL_COMPATIBILITY_JAMO(109,0x3130,0x318F),
    /** 象形字注释标志 */
    KANBUN(110,0x3190,0x319F),
    /** 注音字母扩展 */
    BOPOMOFO_EXTENDED(111,0x31A0,0x31BF),
    /** 中日韩笔画 */
    CJK_STROKES(112,0x31C0,0x31EF),
    /** 日文片假名语音扩展 */
    KATAKANA_PHONETIC_EXTENSIONS(113,0x31F0,0x31FF),
    /** 带圈中日韩字母和月份 */
    ENCLOSED_CJK_LETTERS_AND_MONTHS(114,0x3200,0x32FF),
    /** 中日韩字符集兼容 */
    CJK_COMPATIBILITY(115,0x3300,0x33FF),
    /** 中日韩统一表意文字扩展A */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A(116,0x3400,0x4DBF),
    /** 易经六十四卦符号 */
    YIJING_HEXAGRAM_SYMBOLS(117,0x4DC0,0x4DFF),
    /** 中日韩统一表意文字:\u4E00-\u9FA5,一-龥 */
    CJK_UNIFIED_IDEOGRAPHS(118,0x4E00,0x9FFF),
    /** 彝文音节 */
    YI_SYLLABLES(119,0xA000,0xA48F),
    /** 彝文字根 */
    YI_RADICALS(120,0xA490,0xA4CF),
    /** Lisu */
    LISU(121,0xA4D0,0xA4FF),
    /** 老傈僳文 */
    OLD_LISU_ALPHABET(122,0xA500,0xA63F),
    /** 西里尔字母扩展B */
    CIRYLLIC_EXTENDED_B(123,0xA640,0xA69F),
    /** 巴姆穆语 */
    BAMUM(124,0xA6A0,0xA6FF),
    /** 声调修饰字母 */
    MODIFIER_TONE_LETTERS(125,0xA700,0xA71F),
    /** 拉丁文扩展D */
    LATIN_EXTENDED_D(126,0xA720,0xA7FF),
    /** 锡尔赫特文 */
    SYLOTY_NAGRI(127,0xA800,0xA82F),
    /** 印第安数字 */
    INDIAN_NUMERIC_CHARACTER(128,0xA830,0xA83F),
    /** 八思巴文 */
    PHAGS_PA(129,0xA840,0xA87F),
    /** 索拉什特拉 */
    SAURASHTRA(130,0xA880,0xA8DF),
    /** 天城文扩展 */
    DEVANAGARI_EXTENDED_CHARACTERS(131,0xA8E0,0xA8FF),
    /** 克耶字母 */
    KAYAH_LI(132,0xA900,0xA92F),
    /** 勒姜语 */
    REJANG(133,0xA930,0xA95F),
    /** 谚文字母扩展A */
    HANGUL(134,0xA960,0xA97F),
    /** 爪哇语 */
    JAVANESE_ALPHABET(135,0xA980,0xA9DF),
    /** Myanmar Extended-B */
    MYANMAR_EXTENDED_B(136,0xA9E0,0xA9FF),
    /** 鞑靼文 */
    CHAM_ALPHABET(137,0xAA00,0xAA5F),
    /** 缅甸语扩展 */
    BURMESE_ALPHABET_EXTENTION_A(138,0xAA60,0xAA7F),
    /** 越南傣文 */
    TAI_VIET_ALPHABET(139,0xAA80,0xAADF),
    /** 曼尼普尔文扩展 */
    MEITEI_LANGUAGE_EXTENSIONS(140,0xAAE0,0xAAFF),
    /** 埃塞俄比亚文 */
    ETHIOPIC_EXTENDED_A(141,0xAB00,0xAB2F),
    /** Latin Extended-E */
    LATIN_EXTENDED_E(142,0xAB30,0xAB6F),
    /** Cherokee Supplement */
    CHEROKEE_SUPPLEMENT(143,0xAB70,0xABBF),
    /** 曼尼普尔文 */
    MEITEI_LANGUAGE(144,0xABC0,0xABFF),
    /** 谚文音节 */
    HANGUL_SYLLABLES(145,0xAC00,0xD7AF),
    /** Hangul Jamo Extended-B */
    HANGUL_JAMO_EXTENDED_B(146,0xD7B0,0xD7FF),
    /** 代理对高位字 */
    HIGH_SURROGATES(147,0xD800,0xDB7F),
    /** 代理对私用区高位字 */
    HIGH_PRIVATE_USE_SURROGATES(148,0xDB80,0xDBFF),
    /** 代理对低位字 */
    LOW_SURROGATES(149,0xDC00,0xDFFF),
    /** 私用区 */
    PRIVATE_USE_AREA(150,0xE000,0xF8FF),
    /** 中日韩兼容表意文字 */
    CJK_COMPATIBILITY_IDEOGRAPHS(151,0xF900,0xFAFF),
    /** 字母表达形式（拉丁字母连字、亚美尼亚字母连字、希伯来文表现形式） */
    ALPHABETIC_PRESENTATION_FORMS(152,0xFB00,0xFB4F),
    /** 阿拉伯文表达形式A */
    ARABIC_PRESENTATION_FORMS_A(153,0xFB50,0xFDFF),
    /** 异体字选择符 */
    VARIATION_SELECTORS(154,0xFE00,0xFE0F),
    /** 竖排形式 */
    VERTICAL_FORMS(155,0xFE10,0xFE1F),
    /** 组合用半符号 */
    COMBINING_HALF_MARKS(156,0xFE20,0xFE2F),
    /** 中日韩兼容形式 */
    CJK_COMPATIBILITY_FORMS(157,0xFE30,0xFE4F),
    /** 小写变体形式 */
    SMALL_FORM_VARIANTS(158,0xFE50,0xFE6F),
    /** 阿拉伯文表达形式B */
    ARABIC_PRESENTATION_FORMS_B(159,0xFE70,0xFEFF),
    /** 半角及全角形式 */
    HALFWIDTH_AND_FULLWIDTH_FORMS(160,0xFF00,0xFFEF),
    /** 特殊 */
    SPECIALS(161,0xFFF0,0xFFFF),
    /** Linear B Syllabary */
    LINEAR_B_SYLLABARY(162,0x10000,0x1007F),
    /** Linear B Ideograms */
    LINEAR_B_IDEOGRAMS(163,0x10080,0x100FF),
    /** Aegean Numbers */
    AEGEAN_NUMBERS(164,0x10100,0x1013F),
    /** Ancient Greek Numbers */
    ANCIENT_GREEK_NUMBERS(165,0x10140,0x1018F),
    /** Ancient Symbols */
    ANCIENT_SYMBOLS(166,0x10190,0x101CF),
    /** Phaistos Disc */
    PHAISTOS_DISC(167,0x101D0,0x101FF),
    /** Lycian */
    LYCIAN(168,0x10280,0x1029F),
    /** Carian */
    CARIAN(169,0x102A0,0x102DF),
    /** Coptic Epact Numbers */
    COPTIC_EPACT_NUMBERS(170,0x102E0,0x102FF),
    /** Old Italic */
    OLD_ITALIC(171,0x10300,0x1032F),
    /** Gothic */
    GOTHIC(172,0x10330,0x1034F),
    /** Old Permic */
    OLD_PERMIC(173,0x10350,0x1037F),
    /** Ugaritic */
    UGARITIC(174,0x10380,0x1039F),
    /** Old Persian */
    OLD_PERSIAN(175,0x103A0,0x103DF),
    /** Deseret */
    DESERET(176,0x10400,0x1044F),
    /** Shavian */
    SHAVIAN(177,0x10450,0x1047F),
    /** Osmanya */
    OSMANYA(178,0x10480,0x104AF),
    /** Osage */
    OSAGE(179,0x104B0,0x104FF),
    /** Elbasan */
    ELBASAN(180,0x10500,0x1052F),
    /** Caucasian Albanian */
    CAUCASIAN_ALBANIAN(181,0x10530,0x1056F),
    /** Linear A */
    LINEAR_A(182,0x10600,0x1077F),
    /** Cypriot Syllabary */
    CYPRIOT_SYLLABARY(183,0x10800,0x1083F),
    /** Imperial Aramaic */
    IMPERIAL_ARAMAIC(184,0x10840,0x1085F),
    /** Palmyrene */
    PALMYRENE(185,0x10860,0x1087F),
    /** Nabataean */
    NABATAEAN(186,0x10880,0x108AF),
    /** Hatran */
    HATRAN(187,0x108E0,0x108FF),
    /** Phoenician */
    PHOENICIAN(188,0x10900,0x1091F),
    /** Lydian */
    LYDIAN(189,0x10920,0x1093F),
    /** Meroitic Hieroglyphs */
    MEROITIC_HIEROGLYPHS(190,0x10980,0x1099F),
    /** Meroitic Cursive */
    MEROITIC_CURSIVE(191,0x109A0,0x109FF),
    /** Kharoshthi */
    KHAROSHTHI(192,0x10A00,0x10A5F),
    /** Old South Arabian */
    OLD_SOUTH_ARABIAN(193,0x10A60,0x10A7F),
    /** Old North Arabian */
    OLD_NORTH_ARABIAN(194,0x10A80,0x10A9F),
    /** Manichaean */
    MANICHAEAN(195,0x10AC0,0x10AFF),
    /** Avestan */
    AVESTAN(196,0x10B00,0x10B3F),
    /** Inscriptional Parthian */
    INSCRIPTIONAL_PARTHIAN(197,0x10B40,0x10B5F),
    /** Inscriptional Pahlavi */
    INSCRIPTIONAL_PAHLAVI(198,0x10B60,0x10B7F),
    /** Psalter Pahlavi */
    PSALTER_PAHLAVI(199,0x10B80,0x10BAF),
    /** Old Turkic */
    OLD_TURKIC(200,0x10C00,0x10C4F),
    /** Old Hungarian */
    OLD_HUNGARIAN(201,0x10C80,0x10CFF),
    /** Hanifi Rohingya */
    HANIFI_ROHINGYA(202,0x10D00,0x10D3F),
    /** Rumi Numeral Symbols */
    RUMI_NUMERAL_SYMBOLS(203,0x10E60,0x10E7F),
    /** Yezidi */
    YEZIDI(204,0x10E80,0x10EBF),
    /** Old Sogdian */
    OLD_SOGDIAN(205,0x10F00,0x10F2F),
    /** Sogdian */
    SOGDIAN(206,0x10F30,0x10F6F),
    /** Chorasmian */
    CHORASMIAN(207,0x10FB0,0x10FDF),
    /** Elymaic */
    ELYMAIC(208,0x10FE0,0x10FFF),
    /** Brahmi */
    BRAHMI(209,0x11000,0x1107F),
    /** Kaithi */
    KAITHI(210,0x11080,0x110CF),
    /** Sora Sompeng */
    SORA_SOMPENG(211,0x110D0,0x110FF),
    /** Chakma */
    CHAKMA(212,0x11100,0x1114F),
    /** Mahajani */
    MAHAJANI(213,0x11150,0x1117F),
    /** Sharada */
    SHARADA(214,0x11180,0x111DF),
    /** Sinhala Archaic Numbers */
    SINHALA_ARCHAIC_NUMBERS(215,0x111E0,0x111FF),
    /** Khojki */
    KHOJKI(216,0x11200,0x1124F),
    /** Multani */
    MULTANI(217,0x11280,0x112AF),
    /** Khudawadi */
    KHUDAWADI(218,0x112B0,0x112FF),
    /** Grantha */
    GRANTHA(219,0x11300,0x1137F),
    /** Newa */
    NEWA(220,0x11400,0x1147F),
    /** Tirhuta */
    TIRHUTA(221,0x11480,0x114DF),
    /** Siddham */
    SIDDHAM(222,0x11580,0x115FF),
    /** Modi */
    MODI(223,0x11600,0x1165F),
    /** Mongolian Supplement */
    MONGOLIAN_SUPPLEMENT(224,0x11660,0x1167F),
    /** Takri */
    TAKRI(225,0x11680,0x116CF),
    /** Ahom */
    AHOM(226,0x11700,0x1173F),
    /** Dogra */
    DOGRA(227,0x11800,0x1184F),
    /** Warang Citi */
    WARANG_CITI(228,0x118A0,0x118FF),
    /** Dives Akuru */
    DIVES_AKURU(229,0x11900,0x1195F),
    /** Nandinagari */
    NANDINAGARI(230,0x119A0,0x119FF),
    /** Zanabazar Square */
    ZANABAZAR_SQUARE(231,0x11A00,0x11A4F),
    /** Soyombo */
    SOYOMBO(232,0x11A50,0x11AAF),
    /** Pau Cin Hau */
    PAU_CIN_HAU(233,0x11AC0,0x11AFF),
    /** Bhaiksuki */
    BHAIKSUKI(234,0x11C00,0x11C6F),
    /** Marchen */
    MARCHEN(235,0x11C70,0x11CBF),
    /** Masaram Gondi */
    MASARAM_GONDI(236,0x11D00,0x11D5F),
    /** Gunjala Gondi */
    GUNJALA_GONDI(237,0x11D60,0x11DAF),
    /** Makasar */
    MAKASAR(238,0x11EE0,0x11EFF),
    /** Lisu Supplement */
    LISU_SUPPLEMENT(239,0x11FB0,0x11FBF),
    /** Tamil Supplement */
    TAMIL_SUPPLEMENT(240,0x11FC0,0x11FFF),
    /** Cuneiform */
    CUNEIFORM(241,0x12000,0x123FF),
    /** Cuneiform Numbers and Punctuation */
    CUNEIFORM_NUMBERS_AND_PUNCTUATION(242,0x12400,0x1247F),
    /** Early Dynastic Cuneiform */
    EARLY_DYNASTIC_CUNEIFORM(243,0x12480,0x1254F),
    /** Egyptian Hieroglyphs */
    EGYPTIAN_HIEROGLYPHS(244,0x13000,0x1342F),
    /** Egyptian Hieroglyph Format Controls */
    EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS(245,0x13430,0x1343F),
    /** Anatolian Hieroglyphs */
    ANATOLIAN_HIEROGLYPHS(246,0x14400,0x1467F),
    /** Bamum Supplement */
    BAMUM_SUPPLEMENT(247,0x16800,0x16A3F),
    /** Mro */
    MRO(248,0x16A40,0x16A6F),
    /** Bassa Vah */
    BASSA_VAH(249,0x16AD0,0x16AFF),
    /** Pahawh Hmong */
    PAHAWH_HMONG(250,0x16B00,0x16B8F),
    /** Medefaidrin */
    MEDEFAIDRIN(251,0x16E40,0x16E9F),
    /** Miao */
    MIAO(252,0x16F00,0x16F9F),
    /** Ideographic Symbols and Punctuation */
    IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION(253,0x16FE0,0x16FFF),
    /** Tangut */
    TANGUT(254,0x17000,0x187FF),
    /** Tangut Components */
    TANGUT_COMPONENTS(255,0x18800,0x18AFF),
    /** Khitan Small Script */
    KHITAN_SMALL_SCRIPT(256,0x18B00,0x18CFF),
    /** Tangut Supplement */
    TANGUT_SUPPLEMENT(257,0x18D00,0x18D8F),
    /** Kana Supplement */
    KANA_SUPPLEMENT(258,0x1B000,0x1B0FF),
    /** Kana Extended-A */
    KANA_EXTENDED_A(259,0x1B100,0x1B12F),
    /** Small Kana Extension */
    SMALL_KANA_EXTENSION(260,0x1B130,0x1B16F),
    /** Nushu */
    NUSHU(261,0x1B170,0x1B2FF),
    /** Duployan */
    DUPLOYAN(262,0x1BC00,0x1BC9F),
    /** Shorthand Format Controls */
    SHORTHAND_FORMAT_CONTROLS(263,0x1BCA0,0x1BCAF),
    /** Byzantine Musical Symbols */
    BYZANTINE_MUSICAL_SYMBOLS(264,0x1D000,0x1D0FF),
    /** Musical Symbols */
    MUSICAL_SYMBOLS(265,0x1D100,0x1D1FF),
    /** Ancient Greek Musical Notation */
    ANCIENT_GREEK_MUSICAL_NOTATION(266,0x1D200,0x1D24F),
    /** Mayan Numerals */
    MAYAN_NUMERALS(267,0x1D2E0,0x1D2FF),
    /** Tai Xuan Jing Symbols */
    TAI_XUAN_JING_SYMBOLS(268,0x1D300,0x1D35F),
    /** Counting Rod Numerals */
    COUNTING_ROD_NUMERALS(269,0x1D360,0x1D37F),
    /** Mathematical Alphanumeric Symbols */
    MATHEMATICAL_ALPHANUMERIC_SYMBOLS(270,0x1D400,0x1D7FF),
    /** Sutton SignWriting */
    SUTTON_SIGN_WRITING(271,0x1D800,0x1DAAF),
    /** Glagolitic Supplement */
    GLAGOLITIC_SUPPLEMENT(272,0x1E000,0x1E02F),
    /** Nyiakeng Puachue Hmong */
    NYIAKENG_PUACHUE_HMONG(273,0x1E100,0x1E14F),
    /** Wancho */
    WANCHO(274,0x1E2C0,0x1E2FF),
    /** Mende Kikakui */
    MENDE_KIKAKUI(275,0x1E800,0x1E8DF),
    /** Adlam */
    ADLAM(276,0x1E900,0x1E95F),
    /** Indic Siyaq Numbers */
    INDIC_SIYAQ_NUMBERS(277,0x1EC70,0x1ECBF),
    /** Ottoman Siyaq Numbers */
    OTTOMAN_SIYAQ_NUMBERS(278,0x1ED00,0x1ED4F),
    /** Arabic Mathematical Alphabetic Symbols */
    ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS(279,0x1EE00,0x1EEFF),
    /** Mahjong Tiles */
    MAHJONG_TILES(280,0x1F000,0x1F02F),
    /** Domino Tiles */
    DOMINO_TILES(281,0x1F030,0x1F09F),
    /** Playing Cards */
    PLAYING_CARDS(282,0x1F0A0,0x1F0FF),
    /** Enclosed Alphanumeric Supplement */
    ENCLOSED_ALPHANUMERIC_SUPPLEMENT(283,0x1F100,0x1F1FF),
    /** Enclosed Ideographic Supplement */
    ENCLOSED_IDEOGRAPHIC_SUPPLEMENT(284,0x1F200,0x1F2FF),
    /** Miscellaneous Symbols and Pictographs */
    MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS(285,0x1F300,0x1F5FF),
    /** Emoticons (Emoji) */
    EMOTICONS(286,0x1F600,0x1F64F),
    /** Ornamental Dingbats */
    ORNAMENTAL_DINGBATS(287,0x1F650,0x1F67F),
    /** Transport and Map Symbols */
    TRANSPORT_AND_MAP_SYMBOLS(288,0x1F680,0x1F6FF),
    /** Alchemical Symbols */
    ALCHEMICAL_SYMBOLS(289,0x1F700,0x1F77F),
    /** Geometric Shapes Extended */
    GEOMETRIC_SHAPES_EXTENDED(290,0x1F780,0x1F7FF),
    /** Supplemental Arrows-C */
    SUPPLEMENTAL_ARROWS_C(291,0x1F800,0x1F8FF),
    /** Supplemental Symbols and Pictographs */
    SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS(292,0x1F900,0x1F9FF),
    /** Chess Symbols */
    CHESS_SYMBOLS(293,0x1FA00,0x1FA6F),
    /** Symbols and Pictographs Extended-A */
    SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A(294,0x1FA70,0x1FAFF),
    /** Symbols for Legacy Computing */
    SYMBOLS_FOR_LEGACY_COMPUTING(295,0x1FB00,0x1FBFF),
    /** CJK Unified Ideographs Extension B */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B(296,0x20000,0x2A6DF),
    /** CJK Unified Ideographs Extension C */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C(297,0x2A700,0x2B73F),
    /** CJK Unified Ideographs Extension D */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D(298,0x2B740,0x2B81F),
    /** CJK Unified Ideographs Extension E */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E(299,0x2B820,0x2CEAF),
    /** CJK Unified Ideographs Extension F */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F(300,0x2CEB0,0x2EBEF),
    /** CJK Compatibility Ideographs Supplement */
    CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT(301,0x2F800,0x2FA1F),
    /** CJK Unified Ideographs Extension G */
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G(302,0x30000,0x3134F),
    /** Tags */
    TAGS(303,0xE0000,0xE007F),
    /** Variation Selectors Supplement */
    VARIATION_SELECTORS_SUPPLEMENT(304,0xE0100,0xE01EF),
    /** Supplementary Private Use Area-A */
    SUPPLEMENTARY_PRIVATE_USE_AREA_A(305,0xF0000,0xFFFFF),
    /** Supplementary Private Use Area-B */
    SUPPLEMENTARY_PRIVATE_USE_AREA_B(306,0x100000,0x10FFFF)
    ;
    /** 枚举下标 */
    private final int order;
    /** 范围-起始 */
    private final long start;
    /** 范围-截至 */
    private final long end;
    FontRangeEnum(int order,long start, long end) {
        this.order = order;
        this.start = start;
        this.end = end;
    }
    /** 枚举下标 */
    public int getOrder() { return order; }
    /** 字符Unicode的范围(16进制)-起始 */
    public long getStart() { return start; }
    /** 字符Unicode的范围(16进制)-截至 */
    public long getEnd() { return end; }
    /** 字符Unicode的范围(16进制)码值-起始,0->U+0000 */
    public String getStartUnicode(){ return longToStrBy16("U+", start); }
    /** 字符Unicode的范围(16进制)字符串-起始,0->\\u0000 */
    public String getStartByHex(){ return longToStrBy16("\\u", start); }
    /** 字符Unicode的范围(16进制)字符串-起始,127->U+007F */
    public String getEndUnicode(){ return longToStrBy16("U+", end); }
    /** 字符Unicode的范围(16进制)字符串-起始,127->\\u007F */
    public String getEndByHex(){ return longToStrBy16("\\u", end); }
    /** 获取范围正则字符串。0,127 -> \\u0000-\\u007F*/
    public String getRegexStr(){return longToStrBy16("\\u", start)+"-"+longToStrBy16("\\u", end);}
    /** 判断字符是否在范围内*/
    public boolean matches(char text){ return text >= start && text <= end; }
    /** 判断字符串是否包含范围内的字符*/
    public boolean contain(String str){
        String regex = "["+longToStrBy16("\\u", start)+"-"+longToStrBy16("\\u", end)+"]";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.find();
    }
    /**
     * long 转 16进制，并补零位，追加前缀
     * @param pre 前缀，\\u,U+,0x
     * @param val 待处理的数字
     * @return 处理结果,0->\\u0000->U+0000->0x0000
     */
    private String longToStrBy16(String pre, long val){
        StringBuilder sb = new StringBuilder(pre);
        String res = Long.toString(val,16);
        for (int i = res.length(),max = 4; i < max; i++) {
            sb.append((char) 0);
        }
        sb.append(res);
        return sb.toString();
    }
}
